package model;

import java.util.Map;
import java.util.Observable;

import utils.IFormatter;

/**
 * Controlla lo stato di visibilità (per l'observer) delle classifiche, cioè se
 * una è true e si vede, altrimenti l'altra;
 * 
 * @author koelio
 * 
 */
public class ChartGenerator extends Observable {

	private IFormatter formatted;
	private boolean teamStatus;
	private boolean facStatus;

	public ChartGenerator(IFormatter formatted) {
		super();
		this.formatted = formatted;

	}

	public void setTeamStatus(boolean teamChart) {
		this.teamStatus = teamChart;
		this.facStatus = false;
		up();
	}

	public void setFacStatus(boolean facChart) {
		this.facStatus = facChart;
		this.teamStatus = false;
		up();
	}

	public boolean getTeamStatus() {
		return this.teamStatus;
	}

	public boolean getFacStatus() {
		return this.facStatus;
	}

	/**
	 * si occupa di generare la classifica per squadre a partire dai dati
	 * formattati di formatted
	 * 
	 * @return mappa della classifica per squadre (al contraio)
	 */
	public Map<Integer, String> getTeamChart() {

		return (new TeamChart(formatted)).getTeamChart();
	}

	/**
	 * si occupa di generare la classifica per squadre a partire dai dati
	 * formattati di formatted
	 * 
	 * @return mappa della classifica per facoltà (al contraio)
	 */
	public Map<Integer, String> getFacChart() {

		return (new FacChart(formatted)).getFacChart();

	}

	public void up() {
		setChanged();
		notifyObservers();
	}

}
